﻿import * as React from 'react'
import * as electron  from 'electron'
import Obj = require('object-assign')
import * as 基类 from './控件基类'
const ipcR = electron.ipcRenderer

export default class R控件基类 extends React.Component<any, any> {
    样式: 基类.基本样式
    基础数据: 基类.控件基类 = {}
    标准样式: React.CSSProperties = {}
    经过样式: React.CSSProperties = {}
    点击样式: React.CSSProperties = {}
    禁用样式: React.CSSProperties = {}
    基本事件 = {
        onMouseDown: (e) => {
            e.stopPropagation()
            this.setState({ 使用样式: Obj({}, this.标准样式, this.点击样式) })
        },
        onMouseUp: (e) => {
            e.stopPropagation()
            this.setState({ 使用样式: Obj({}, this.标准样式, this.经过样式) })
        },
        onMouseLeave: (e) => {
            e.stopPropagation()
            this.setState({ 使用样式: this.标准样式 })
        },
        onMouseOver: (e) => {
            e.stopPropagation()
            this.setState({ 使用样式: Obj({}, this.标准样式, this.经过样式) })
        }
    }
    constructor(props) {
        super(props)
        this.基础数据 = this.props as 基类.控件基类
        this.样式 = new 基类.基本样式(this.基础数据)
        this.标准样式 = this.基础数据.自定义样式 ? this.基础数据.自定义样式 :this.样式.取值
        this.经过样式 = this.基础数据.自定义经过样式 ? this.基础数据.自定义经过样式 : this.样式.取经过样式
        this.点击样式 = this.基础数据.自定义点击样式 ? this.基础数据.自定义点击样式 : this.样式.取点击样式
        this.state = {
            使用样式: this.标准样式
        }
        this.禁用样式 = this.基础数据.自定义禁用样式 ? this.基础数据.自定义禁用样式 : Obj({}, this.state.使用样式, this.样式.取禁用样式)
        ipcR.on(`启用${this.基础数据.权限}`, () => {
            if (this.state.是否启用 == false) {
                this.setState({ 是否启用: true })
            }
        })
        ipcR.on(`禁用${this.基础数据.权限}`, () => {
            if (this.state.是否启用 == true) {
                this.setState({ 是否启用: false })
            }
        })
    }
}